1. Technical Field
The present invention relates in general to the field of digital music synthesizers and in particular to a method and apparatus for filtering the output of a digital music synthesizer. Still more particularly, the present invention relates to a method and apparatus for filtering the output of a digital music synthesizer with a dynamically controlled filter which is controllable under center frequency, sampling rate and filter Q by means of MIDI note numbers and program control commands contained within a MIDI data file.
2. Description of the Related Art
Musical synthesizers have been well known in the prior art for some time. Early analog synthesizers typically utilize an excitation waveform generator capable of generating sawtooth waveforms, triangle waveforms or square waves. The output frequency of this excitation waveform generator was controllable in response to a desired pitch and often a low frequency oscillator was connected to the excitation waveform generate to permit vibrato effects to be generated.
In such systems, the selectable output of the excitation waveform generator was then typically coupled to a filter and amplifier before being connected to an audio output device, such as a speaker.
Early music synthesizers often utilize a voltage-controlled filter. Analog filters are typically difficult to voltage control and were generally constructed utilizing L-C filters which were tuned by changing the reactive components, either the capacitor or the inductor. Later, with the widespread use of operational amplifiers and R-C active filters, the resistor was varied for fine tuning purposes and the capacitor was changed for different ranges.
The Q factor (or bandwidth in hertz) of a filter is another important feature of a filter and may be utilized to enhance the particular sound generated by an excitation waveform generator. For example, the acoustic differences between a horn sound and a string instrument sound may be emphasized by varying the bandwidth of a bandpass filter to permit more or less acoustic energy on either side of the center frequency to be amplified and coupled to a speaker.
Early researchers in the music synthesizer area discovered that the control of suitable filter and voltage controlled amplifiers may be expeditiously accomplished by means of a so-called "Attack-Decay-Sustain-Release" (ADSR) circuit. By selectively controlling the output of an ADSR circuit in each of its four segments an excitation signal may be shaped and filtered to approximate the sound of a desired musical instrument
Of course, the wide variety of sounds and frequencies which are generated by a music synthesizer utilizing state-of-the-art technology renders the task of filtering the output substantially more difficult.
Current musical synthesizers typically utilize MIDI, the "Musical Instrument Digital Interface" which was established as a hardware and software specification which would make it possible to exchange information such as: musical notes; program changes; expression control; etc. between different musical instruments or other devices such as: sequencers; computers; lighting controllers; mixers; etc. This ability to transmit and receive data was originally conceived for live performances, although subsequent developments have had an enormous impact in recording studios, audio and video production, and composition environments.
The standard for the MIDI interface has been prepared and published as a joint effort between the MIDI Manufacturer's Association (MMA) and the Japan MIDI Standards Committee (JMSC). This standard is subject to change by agreement between JMSC and MMA and is currently published as the MIDI 1.0 Detailed Specification Document Version 4.1, January 1989.
The hardware portion of the MIDI interface operates at 31.25 KBAUD asynchronous, with a start bit, eight data bits and a stop bit. This makes a total of ten bits for a period of 320 microseconds per serial byte. The start bit is a logical zero and the stop bit is a logical on. Bytes are transmitted by sending the least significant bit first. Data bits are transmitted in the MIDI interface by utilizing a five milliamp current loop. A logical zero is represented by the current being turned on and a logical one is represented by the current being turned off. Rise times and fall times for this current loop shall be less than two microseconds. A five pin DIN connector is utilized to provide a connection for this current loop with only two pins being utilized to transmit the current loop signal.
Typically, an opto-isolator is utilized to provide isolation between devices which are coupled together utilizing a MIDI format. Communication utilized in the MIDI interface is achieved through multi-byte "messages" which consist of one status byte followed by one or two data bytes. There are certain exceptions to this rule. MIDI messages are sent over any of sixteen channels which may be utilized for a variety of performance information. There are five major types of MIDI messages: Channel Voice; Channel Mode; System Common; System Real-Time; and System Exclusive. A MIDI event is transmitted as a message and consists of one or more bytes.
A channel message in the MIDI system utilizes four bits in the status byte to address the message to one of sixteen MIDI channels and four bits to define the message. Channel messages are thereby intended for the receivers in a system whose channel number matches the channel number encoded in the status byte. An instrument may receive a MIDI message on more than one channel. The channel in which it receives its main instructions, such as which program number to be on and what mode to be in, is often referred to as its "Basic Channel." There are two basic types of channel messages, a Voice message and a Mode message. A Voice message is utilized to control an instrument's voices and Voice messages are typically sent over voice channels. A Mode message is utilized to define the instrument's response to Voice messages, Mode messages are generally sent over the instrument's Basic Channel.
System messages within the MIDI system may include Common messages, Real-time messages and Exclusive messages. Common messages are intended for all receivers in a system regardless of the channel that receiver is associated with. Real-time messages are utilized for synchronization and are intended for all clock based units in a system. Real-time messages contain status bytes only, and do not include data bytes. Real-time messages may be sent at any time, even between bytes of a message which has a different status. Exclusive messages may contain any number of data bytes and can be terminated either by an end of exclusive or any other status byte, with the exception of real-time messages. An end of exclusive should always be sent at the end of a System Exclusive message. System Exclusive messages always include a manufacturer's identification code. If a receiver does not recognize the identification code it will ignore the following data.
As those skilled in the art will appreciate upon reference to the foregoing, musical compositions may be encoded utilizing the MIDI standard and stored and/or transmitted utilizing substantially less data. The MIDI standard permits the transmittal of a serial listing of program status messages and channel messages, such as "note on" and "note off" and as consequence require substantially less digital data to encode than the straightforward digitization of an analog music signal.
In view of the foregoing, it should be apparent that it would be advantageous to provide a filter for utilization in a music synthesizer which is dynamically controllable by means of the data contained within a MIDI data stream. That is, a dynamically controllable filter which will automatically accommodate the particular acoustic characteristics of the sounds being generated by a MIDI synthesizer.